package cn.initcap.algorithm.data.structures.map;

/**
 * @author initcap
 * @date Created in 2018/6/28 AM9:24.
 */
public interface Map<K, V> {

    /**
     * 添加键值
     *
     * @param key   键
     * @param value 值
     */
    void add(K key, V value);

    /**
     * 根据键删除键值
     *
     * @param key 键
     * @return 删除的值
     */
    V remove(K key);

    /**
     * 判断键是否存在
     *
     * @param key 键
     * @return true 存在
     */
    boolean contains(K key);

    /**
     * 通过键得到值
     *
     * @param key 键
     * @return 值
     */
    V get(K key);

    /**
     * 通过键赋给新值
     *
     * @param key      键
     * @param newValue 新值
     */
    void set(K key, V newValue);

    /**
     * 得到尺寸
     *
     * @return size
     */
    int getSize();

    /**
     * 判断是否为空
     *
     * @return true 空
     */
    boolean isEmpty();
}
